/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package bungabungaball;

import bungabungaball.gamestates.GamePlay;
import org.newdawn.slick.Input;

/**
 * The class Global Settings defines some global variables.
 *
 * @author Ingo Klose, Stephan Meyer, Sebastian Lehmann
 * @version 1.0
 */
public class GlobalSettings {

    /**
     * The window size x
     */
    public final static int windowSizeX = 1024;
    /**
     * The window size y
     */
    public final static int windowSizeY = 768;
    /**
     * The player rotation in beginning
     */
    public final static float playerRotation = 0.2f;
    /**
     * The start speed of player X
     */
    public final static float playerSpeed = 4.f;
    /**
     * The maximum speed of player X
     */
    public final static float playerMaxSpeed = 10.f;
    /**
     * The minimum speed of player
     */
    public final static float playerMinSpeed = 0.4f;
    /**
     * The mass of a player
     */
    public final static float playerMass = 10.f;
    /**
     * The friction
     */
    public final static float reibung = 0.999999f;
    /**
     * Is disco mode enabled
     */
    public static Boolean discoMode = false;
    /**
     * Is sound enabled
     */
    public static Boolean sound = true;
    /**
     * Which player wins a game
     */
    public static int winner = 0;

    /**
     * The Game Modes
     */
    public enum gameModes {

        /**
         *
         */
        SinglePlayer,
        /**
         *
         */
        MultiPlayer,
        /**
         *
         */
        Server,
        /**
         *
         */
        Client,
        /**
         *
         */
        SinglePlayerSpecific,
        /**
         *
         */
        MultiPlayerSpecific,
        /**
         *
         */
        Replay
    }

    /**
     * *
     * The control modes of a player
     */
    public enum ControlMode {

        /**
         *
         */
        Normal,
        /**
         *
         */
        Dificult
    }
    /**
     * The current game mode
     */
    public static gameModes currentGameMode = gameModes.SinglePlayer;
    /**
     * They keys to be pressed by player one
     */
    public static final int[] keyMapPlayer1 = {Input.KEY_LEFT, Input.KEY_RIGHT, Input.KEY_UP, Input.KEY_DOWN};
    /**
     * The keys to be pressed by player two
     */
    public static final int[] keyMapPlayer2 = {Input.KEY_A, Input.KEY_D, Input.KEY_W, Input.KEY_S};
    /**
     * *
     * The classes to be registred for KryoNet
     */
    public static final Class[] kryoRegisterClassNames = {
        Boolean.class,
        int[].class,
        float[].class,
        boolean[].class,
        int.class,
        PowerUp[].class,
        float[][].class,
        PowerUp.class,
        bungabungaball.GlobalSettings.ControlMode.class,
        org.jbox2d.common.Vec2.class,
        StartShowPowerUp.class,
        EndShowPowerUp.class
    };
    /**
     * The factor between physicle engine and graphicle engine
     */
    public static final int jBox2dFactor = 5;
    /**
     * The powerUps and PowerDowns
     */
    public static PowerUp[] powerUp;
    /**
     * The powerUps and PowerDowns restored for Replay
     */
    public static PowerUp[] powerUpMetaData;
    
    /**
     * Number of PowerUps
     */
    public static int up;
    /**
     * Number of PowerDowns
     */
    public static int down;
    /**
     * The basic runtime for one game
     */
    public static int gameRunningTime = 120000;
    /**
     * The skill for CPU
     * 3 easy; 5 normal; 7 hard
     */
    public static int skill = 5;
}
